iT邦幫忙

2024 iThome 鐵人賽

DAY 10
0
Modern Web

前後端整合,用Spring boot 與React 開發屬於自己的記帳網頁系列 第 10

Day10 開發後端Spring boot修改與刪除記帳清單的API

  • 分享至 

  • xImage
  •  

前言

整體來說,前面幾天教大家API的開發流程,接下來這邊會繼續用同樣的觀念教大家開發其他的API,並且完成作為後端系統中最基本也最重要的CRUD功能,也就是新增、讀取、修改、刪除。

在前面兩天已經教大家新增與讀取功能應該要怎麼寫,接下來就要帶大家完成修改與刪除功能。

今天的工作雖然短,但是是因為我們已經有之前的經驗,並且這兩個功能的指令也很簡短,但是藉由昨天跟今天,我們就能夠完成一組最基本,也最完整的後端功能。

修改與刪除Service

每次要開發後端功能,因為Repository已經設置好,不用從這裡開始,所以我們可以從Service開始做起,請到Service層新增以下兩個功能

	AccountDto updateAccount(AccountDto accountDto,Long id);
	void deleteAccount(Long id);

然後到Impl,用昨天的方法來新增這兩個功能,然後一步一步來創建這些Service

update功能撰寫

update的功能如下程式碼

	@Override
	public AccountDto updateAccount(AccountDto accountDto, Long id) {
		Account account = accountRepository.findById(id)
				.orElseThrow(()-> new ResourceNotFoundException("Account not found with id:"+id));
		
	    // 獲得 UTC+8 時區的日期與時間
	    ZonedDateTime utcPlus8 = ZonedDateTime.now(ZoneId.of("Asia/Taipei"));
	    LocalDateTime currentDateTime = utcPlus8.toLocalDateTime();
	    
	    account.setExpensed(accountDto.getExpensed());
	    account.setAmount(accountDto.getAmount());
	    account.setCategory(accountDto.getCategory());
	    account.setCreateDate(currentDateTime);
	    Account savedAccount = accountRepository.save(account); 
		
		return modelMapper.map(savedAccount, AccountDto.class);
	}

delete的功能如下程式碼,我們同樣也使用到的前一天教的錯誤訊息處理方法。

	@Override
	public void deleteAccount(Long id) {
		accountRepository.findById(id)
				.orElseThrow(()-> new ResourceNotFoundException("Account not found with id:"+id));
		accountRepository.deleteById(id);
		
	}

完成這兩個之後,我們可以到Controller層中去創建API的處理方
Controller

	@GetMapping
	public ResponseEntity<List<AccountDto>> getAllAccounts(){
		List<AccountDto> accountDtos = accountsService.getAllAccounts();
		return new ResponseEntity<>(accountDtos,HttpStatus.OK);
	}
	
	@PutMapping("{id}")
	public ResponseEntity<AccountDto> updateAccounts(@PathVariable("id") Long id,@RequestBody AccountDto accountDto){
		AccountDto updateAaccountDto = accountsService.updateAccount(accountDto, id);
		return new ResponseEntity<>(updateAaccountDto,HttpStatus.OK);
	}

接下來就是測試,我們到Postman去新增Update Request,測試成功就會回傳200OK跟更新項目
https://ithelp.ithome.com.tw/upload/images/20240919/201528640WHTlLaPzA.png
接下來就要設置delete的接口

	@DeleteMapping("{id}")
	public ResponseEntity<String> deleteAccount(@PathVariable("id")Long id){
		accountsService.deleteAccount(id);
		return new ResponseEntity<>("Delete Success",HttpStatus.OK);
	}

測試的方式如下
https://ithelp.ithome.com.tw/upload/images/20240919/20152864tNX3M45wjV.png
到這裡之後,我們就成功的完成了更新與刪除,完成CRUD的整個開發!


上一篇
Day9 建置後端單一查詢與全部查詢兩支API
下一篇
Day11 開發根據不同類別篩選帳目API
系列文
前後端整合,用Spring boot 與React 開發屬於自己的記帳網頁30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言